package Day20.异常;

import java.util.InputMismatchException;
import java.util.Scanner;

public class 异常实例3 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        try{
            System.out.print("请输入第一个数:");
            Integer num1 = input.nextInt();
            System.out.print("请输入第二个数:");
            Integer num2 = input.nextInt();
            //try等同于人民警察
            //try代码块,主要用于监控可能出现异常的代码,如果异常一旦出现，try就可以检测到，并将异常交给catch进行捕获并处理
            //当异常出现后其后的代码将不再执行，而是将程序执行流交给了JVM,JVM检测没有做任何关于异常处理，则报错终止程序运行
            Integer result = num1 / num2;//可能出现异常的位置
            System.out.println(result);
            //catch用于捕获并处理异常,当出现异常后，catch会检测出现异常的类型是否为它要处理的类型，如果是则处理
            //如果不是，该catch不进行处理，而是将异常交给JVM，JVM会终止程序执行
        }catch(ArithmeticException ex){//(ArithmeticException ex)指定当前catch要处理的异常类型
            System.out.println("算术异常:除数不能为零！");
            ex.printStackTrace();
        }catch (NullPointerException ex){
            System.out.println("空指针异常!");
        }catch (InputMismatchException ex){
            System.out.println("输入错误");
        }catch (Exception ex){
            System.out.println("未知异常");
        }finally{//不管try块中是否出现异常，都会执行的代码，一般在finally中用于释放资源
            System.out.println("无论是否出现异常都会执行的代码!");
        }




        System.out.println("程序运行结束!");
    }
}
